core: Handle zero-sized archives, improve fsck error message
authorColin Walters <walters@verbum.org>
Fri, 4 May 2012 17:40:25 +0000 (13:40 -0400)
committerColin Walters <walters@verbum.org>
Fri, 4 May 2012 17:40:25 +0000 (13:40 -0400)
src/libostree/ostree-core.c
src/ostree/ot-builtin-fsck.c

index 1f352a7c23140006595bb9c9c21dba6652215a2b..77c31fe91fdc30dd78e6af80d71a75aec85a603f 100644 (file)
@@ -417,6 +417,12 @@ ostree_content_stream_parse (GInputStream           *input,
                    (guint)archive_header_size, input_length);
       goto out;
     }
+  if (archive_header_size == 0)
+    {
+      g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+                   "File header size is zero");
+      goto out;
+    }
 
   /* Skip over padding */
   if (!g_input_stream_read_all (input,
index c617ccd62a151c56bb2d4ba3204e6a88a8ce1e5b..362f026077aa35402d259ad7c5cfbfa9d0ec2db2 100644 (file)
@@ -217,7 +217,10 @@ fsck_reachable_objects_from_commits (OtFsckData            *data,
           ot_clear_gvariant (&metadata);
           if (!ostree_repo_load_variant (data->repo, objtype,
                                          checksum, &metadata, error))
-            goto out;
+            {
+              g_prefix_error (error, "Loading metadata object %s: ", checksum);
+              goto out;
+            }
 
           if (objtype == OSTREE_OBJECT_TYPE_COMMIT)
             {
@@ -255,7 +258,10 @@ fsck_reachable_objects_from_commits (OtFsckData            *data,
           guint32 mode;
           if (!ostree_repo_load_file (data->repo, checksum, &input, &file_info,
                                       &xattrs, cancellable, error))
-            goto out;
+            {
+              g_prefix_error (error, "Loading file object %s: ", checksum);
+              goto out;
+            }
 
           mode = g_file_info_get_attribute_uint32 (file_info, "unix::mode");
           if (!ostree_validate_structureof_file_mode (mode, error))